package NiuKe.JianZhiOffer;
import java.lang.reflect.Array;
import  java.util.*;

/**
 * 描述
 * 输入一个链表的头节点，按链表从尾到头的顺序返回每个节点的值（用数组返回）。
 *
 * 如输入{1,2,3}的链表如下图:
 *
 * 返回一个数组为[3,2,1]
 *
 * 0 <= 链表长度 <= 10000
 * 示例1
 * 输入：
 * {1,2,3}
 * 复制
 * 返回值：
 * [3,2,1]
 * 复制
 * 示例2
 * 输入：
 * {67,0,24,58}
 * 复制
 * 返回值：
 * [58,24,0,67]
 */
public class JZ3 {
    public static void main(String[] args) {
        ListNode list = new ListNode(5);
        list.next = new ListNode(6);
        list.next.next = new ListNode(7);
        JZ3 jz = new JZ3();
        ArrayList<Integer> arrList = jz.printListFromTailToHead(list);
        for (Integer i: arrList
             ) {
            System.out.println(i);
        }

    }
    ArrayList<Integer> list = new ArrayList<Integer>();
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
       /* //栈
       ListNode temp = listNode;
        ArrayList<Integer> arrList = new ArrayList<Integer>();
        if(listNode == null) return arrList;
        Stack<Integer> stack = new Stack<Integer>();
        while(true){
            if(temp == null){
                break;
            }
            stack.push(temp.val);
            temp = temp.next;
        }
        while(!stack.isEmpty()){
            arrList.add(stack.pop());
        }
        return arrList;*/
        //递归
        if(listNode != null){
            printListFromTailToHead(listNode.next);
            list.add(listNode.val);
        }
        return  list;
    }
}
